package org.apache.rocketmq.namesrv.test;

import java.util.function.BiConsumer;
import java.util.function.Function;

public interface CompletionStage<T> {


    //同步执行Function任务，并返回新的结果
    <U>CompletionStage<U> thenApply(Function<? super T, ? extends U> fn);

    //同步执行BiConsumer任务
    CompletionStage<T> whenComplete(BiConsumer<? super T, ? super Throwable> action);

    //返回一个新阶段：该阶段会使用当前阶段的执行结果；如果当前阶段产生的是"异常"结果，则会先通过fn来处理它
    CompletionStage<T> exceptionally(Function<Throwable, ? extends T> fn);

}
